home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HamCall (October 1991)
/
HamCall (Whitehall Publishing)(1991).bin
/
bcast
/
bcstcble
/
smithcht.bas
< prev
next >
Wrap
BASIC Source File
|
1990-10-14
|
11KB
|
261 lines
2 GOSUB 10000: PRINT CL$
10 INPUT "What is the characteristic impedance in ohms ";Z0
12 INPUT "How many Frequencies (1-10) ";N: PRINT
14 IF N<1 OR N>10 THEN 12
16 FOR J =1 TO N
18 PRINT "Input Frequency"J;:INPUT "In MHz.";F(J)
20 PRINT "INPUT RS, XS, OF LOAD AT ";:PRINT USING " ###.##";F(J);:PRINT " MHZ";: INPUT R(J),I(J)
22 X(J)=R(J):Y(J)=I(J):NEXT J: CLS:PRINT
24 PRINT" These were your load impedance inputs:":PRINT
26 PRINT" Freq (MHZ) RS(Ohms) XS(Ohms) ":PRINT: FOR J=1 TO N
28 PRINT USING " #####.###";F(J);:PRINT USING " #####.###";R(J);
30 PRINT USING " #####.###";I(J):NEXT J
31 LOCATE 18
32 LOCATE 18:INPUT "Are you satisfied (Y/N) ?";A$
34 IF A$<>"Y" AND A$<>"y" THEN GOTO 12
38 INPUT"print load values on printer (Y/N)";A$
40 IF A$="Y" OR A$="y" THEN GOSUB 12000
42 IF GR=2 THEN INPUT "Plot Load Impedance (Y/N)";P$
44 IF P$="Y" OR P$="y" THEN CLS:GOSUB 8000
50 PRINT CL$" Choose type of Matching Section";DN$DN$
52 PRINT" 1 Series C
54 PRINT" 2 Series L
56 PRINT" 3 Series Tuned (Series L-C)
58 PRINT" 4 Series Tuned (Parallel L-C)
60 PRINT" 5 Series Transmission Line
62 PRINT" 6 Shunt C
64 PRINT" 7 Shunt L
66 PRINT" 8 Shunt Tuned (Series L-C)
68 PRINT" 9 Shunt Tuned (Parallel L-C)
70 PRINT"10 Shunt Transmission Line
72 PRINT"11 Transformer
74 PRINT"12 Series R
76 PRINT"13 Shunt R
78 PRINT DN$"14 Stop Adding Sections"
80 PRINT DN$"15 Calculate Mode (L-C-Line Values)"
85 PRINT "16 Exit Program"DN$
90 INPUT "Select your choice (1-16)";M
92 IF M<1 OR M>16 THEN 90
94 ON M GOTO 1000,1500,2000,2500,3000,3500,4000,4500,5000,5500
96 ON (M-10) GOTO 6000,6500,7000,9000,9500,12100
1000 PRINT CL$;"Add Series Capacitor
1003 INPUT "What is the value (in PF)";C
1010 FOR J=1 TO N
1015 X(J)=R(J)
1020 Y(J)=I(J)-1/(2*PI*F(J)*C*.000001)
1025 NEXT J: GOTO 9000
1500 PRINT CL$;
1502 INPUT "What is Value (uH) ";L
1510 FOR J = 1 TO N: X(J)=R(J)
1520 Y(J)=I(J)+2*PI*F(J)*L: NEXT J: GOTO 9000
2000 PRINT CL$;"Add Series Tuned (Series L-C)
2002 INPUT "Enter value of C (in Pf.) ";C
2004 INPUT "Enter value of L (in Uh.) ";L
2010 FOR J=1 TO N: X(J)=R(J)
2020 Y(J)=I(J)+2*PI*F(J)*L-1/(2*PI*F(J)*C*.000001):NEXT J: GOTO 9000
2500 PRINT CL$;"Add Series Tuned (Parallel L-C)
2502 INPUT "Enter value of C (in Pf.) ";C
2504 INPUT "Enter value of L (in Uh.) ";L
2510 FOR J=1 TO N: X(J)=R(J)
2520 Y(J)=I(J)+(2*PI*F(J)*L)/(1-((2*PI*F(J))^2)*L*C*.000001):NEXT J: GOTO 9000
3000 PRINT CL$; "Add Series Transmission Line"
3002 INPUT "What is line Impedance (ohms)" ;Z1
3004 INPUT "What is the velocity factor ";V
3006 INPUT "What is length (inches) ";LL
3010 FOR J= 1 TO N
3015 T=1.2*LL*F(J)/39.37/V
3020 D= (R(J)+Z1)^2+I(J)^2
3025 R = (R(J)^2-Z1^2+I(J)^2)/D
3030 I=2*Z1*I(J)/D
3035 Z=SQR(R*R+I*I)
3040 T=180/PI*ATN(I/(R+1E-30))-2*T+180*(R<0)
3045 R=Z*COS(T*PI/180)
3050 I=Z*SIN(T*PI/180)
3055 D=(I-R)^2+I^2
3060 X(J)=Z1*(I-R^2-I^2)/D
3065 Y(J)=2*Z1*I/D
3070 NEXT J:GOTO 9000
3500 PRINT CL$; "Add Shunt Capacitor
3502 INPUT "What is the value of C (in Pf.) ";C
3506 FOR J=1 TO N: W=2*PI*C*.000001
3508 D=(1-W*F(J)*I(J)^2+R(J)*W*F(J))^2
3510 X(J)=R(J)/D
3512 Y(J)=(I(J)*(1-W*F(J)*I(J))-R(J)^2*W*F(J))/D:NEXT J: GOTO 9000
4000 PRINT CL$;"Add Shunt Inductor
4002 INPUT "What is the value of L (in Uh) ";L
4015 FOR J=1 TO N: W=2*PI*F(J)*L
4025 D=R(J)^2+(I(J)+W)^2
4030 X(J)=R(J)*W^2/D
4035 Y(J)=W*(R(J)^2+I(J)^2+W*I(J))/D
4040 NEXT J: GOTO 9000
4500 PRINT CL$;"Add SHunt Tuned (Series (L-C)
4502 INPUT "Enter value of C (in Pf.) ";C
4504 INPUT "Enter value of L (in Uh.) ";L
4510 FOR J=1 TO N
4515 W=2*PI*F(J)*L-(1000000!)/(2*PI*F(J)*C)
4517 D=R(J)^2+(I(J)+W)^2
4520 X(J)=R(J)*W^2/D
4525 Y(J)=W*(R(J)^2+I(J)^2+W*I(J))/D
4530 NEXT J: GOTO 9000
5000 PRINT CL$;"Add Shunt Tuned (Parallel L-C)
5002 INPUT "Enter value of C (in Pf.) ";C
5004 INPUT "Enter value of L (in Uh.) ";L
5010 FOR J=1 TO N
5015 W=(2*PI*F(J)*L)/(1-((2*PI*F(J))^2)*L*C*.000001)
5020 D=R(J)^2+(I(J)+W)^2
5025 X(J)=R(J)*W^2/D
5030 Y(J)=W*(R(J)^2+I(J)^2+W*I(J))/D
5035 NEXT J: GOTO 9000
5502 INPUT "What is line impedance (ohms) ";Z1
5504 INPUT "What is the velocity factor ";V
5506 INPUT "What is the length (inches) ";LL
5507 LOCATE 4,40
5508 PRINT "Open (O) or Shorted (S) Stub ";
5510 INPUT S$
5512 IF S$="s" THEN S$="S"
5514 IF S$="o" THEN S$="O"
5516 IF S$ <>"O" AND S$<>"S" THEN 5510
5520 FOR J = 1 TO N
5525 T=LL*F(J)*1.2/39.37/V
5530 IF S$="S" THEN W=Z1*TAN(T*PI/180)
5535 IF S$="O" THEN W=Z1*TAN((T+90)*PI/180)
5540 D=R(J)^2+(I(J)+W)^2
5545 X(J)=R(J)*W^2/D
5550 Y(J)=W*(R(J)^2+I(J)^2+W*I(J))/D
5555 NEXT J: GOTO 9000
6000 PRINT CL$;"Add Transformer
6002 INPUT "Step Up or Down (U or D) ";T$
6004 IF T$<> "U" AND T$<>"u" AND T$ <>"D" AND T$ <>"d" THEN 6000
6006 INPUT "What transformer ratio "; W
6010 IF T$="D" OR T$ ="d" THEN W=1/W
6020 FOR J= 1 TO N:X(J)=W*R(J)
6025 Y(J)=W*I(J): NEXT J: GOTO 9000
6500 PRINT CL$; "Add Series Resistor
6502 INPUT "What value of R ";RS
6506 FOR J= 1 TO N: X(J) = R(J) +RS
6508 Y(J)=I(J):NEXT J: GOTO 9000
7000 PRINT CL$; "Add shunt resistor
7002 INPUT "What value is resistor ";RS
7004 FOR J = 1 TO N
7006 D=R(J)+RS^2+I(J)^2
7008 X(J)=RS*(R(J)^2+RS*R(J)+I(J)^2)/D
7010 Y(J)=I(J)*RS^2/D: NEXT J : GOTO 9000
7500 CLS: INPUT "Want to Run another One ";A$
7502 IF LEFT$ (A$,1)="Y" OR LEFT$(A$,1) = "y" THEN CLS: RUN
7504 LOCATE 12,34: PRINT "Good Bye !"DN$DN$DN$DN$DN$DN$:END
8000 GET (0,0)-(639,35),TEXT#:CLS
8005 IF X=4 THEN PUT (80,9),BLANK#:GOTO 8020
8010 PUT (80,9),FULL#
8020 FOR J= 1 TO N
8025 D=(X(J)+Z0)^2+Y(J)^2
8030 PX(J)=((X(J)-Z0)*(X(J)+Z0)+Y(J)^2)/D*217
8035 PY(J)=-2*Y(J)*Z0/D*90
8040 PSET (PX(J)+320,PY(J)+100):DRAW PT$
8050 IF D$="S" AND J>1 THEN LINE (320+PX(J-1),100+PY(J-1))-(320+PX(J),100+PY(J))
8060 NEXT J
8070 PRINT "<Prt SCRN> for Screen Dump to Printer or Any Key To Continue .."
8075 FOR J = 1 TO 20E3: NEXT J: LOCATE 1:PRINT SPACE$(79)
8080 I$ = INKEY$: IF I$= "" THEN 8080
8100 GET (80,9)-(560,191),FULL#
8110 CLS: PUT (0,0),TEXT#:RETURN
8300 LOCATE 18: FOR J = 1 TO 6: PRINT SPACE$(79): NEXT J
8305 LOCATE 21,1:INPUT "What Value of VSWR circle do you want to plot ";VS
8310 IF VS<1 THEN 8305
8315 GET (0,0)-(639,35),TEXT#:CLS
8320 PUT (80,9),FULL#
8325 VR=217*(VS-1)/(VS+1)
8330 CIRCLE (320,100),VR
8340 GOTO 8070
9000 CLS: LOCATE 6:PRINT " FREQ (MHZ) R$ (OHMS) XS(OHMS)"DN$
9005 FOR J = 1 TO N
9010 PRINT USING " #####.###";F(J);:PRINT USING" #####.###";X(J);
9015 PRINT USING " #####.###";Y(J):NEXT J
9050 LOCATE 18
9055 PRINT "1 --> Good Value: Keep & Proceed
9060 PRINT "2 --> Print Latest Iteration and Values on Printer
9065 PRINT "3 --> Bad Value: Discard and try a new circuit
9070 IF GR=1 THEN 9100
9075 PRINT "4 --> Plot on Clean Chart
9080 PRINT "5 --> Plot on Last Chart
9085 PRINT "6 --> Plot Constant VSWR Circles
9100 INPUT X
9110 IF X=1 THEN 9200
9120 IF X=2 THEN GOSUB 12000: GOTO 9050
9130 IF X=3 THEN 50
9140 IF X=4 AND GR=2 THEN GOSUB 8000: GOTO 9000
9150 IF X=5 AND GR=2 THEN GOSUB 8000: GOTO 9000
9160 IF X=6 AND GR=2 THEN GOSUB 8300: GOTO 9000
9170 GOTO 9100
9200 FOR J=1 TO N: R(J)=X(J)
9210 I(J)=Y(J): NEXT J
9215 LOCATE 18: FOR J=1 TO 6: PRINT SPACE$(79): NEXT J
9225 LOCATE 18:PRINT "You must now match the impedances listed above. ";
9230 FOR J = 1 TO 1500: NEXT J: GOTO 50
9462 REM : LEN=WL*EL/360*V:LEN=INT(100*LEN+.5)/100
9500 PRINT CL$"Do you wish to calculate (1) L-C Values
9502 PRINT DN$" or (2) Line Lengths"DN$
9504 INPUT "What is Your Choice (1 or 2) ";CH
9506 IF CH<>1 AND CH <>2 THEN 9504
9508 ON CH GOTO 9520,9550
9520 PRINT DN$DN$:INPUT "Enter Operating Frequency (MHz) ";OF
9522 INPUT "Enter Desired Reactance (Ohms) ";DX
9524 IF DX=0 THEN 9522
9526 IF DX<0 THEN DX=-DX
9528 IND=DX/(2*PI*OF)
9530 CAP=1000000!/(2*PI*DX*OF)
9532 PRINT DN$"Use Inductance of ";ND; "uH";
9534 PRINT "or Capacitance of ";CAP;" pf
9536 PRINT "for reactance of ";DX;" Ohms at ";OF;" Mhz.
9538 GOTO 9590
9550 PRINT DN$DN$:INPUT "Enter Operating Frequency (Mhz.) ";OF
9552 INPUT "Velocity Factory of transmission line ";V
9554 INPUT "Enter Electrical Length desired in degrees (1-360) ";EL
9556 IF EL<0 OR EL > 360 THEN 9554
9558 WL=300*39.37/OF
9560 PRINT DN$"One Wavelength in air = ";WL;" inches at ";OF;" Mhz.
9562 LI=INT(100*WL*EL/360*V+.5)/100
9564 PRINT DN$;EL;"Degrees with velocity factor of ";V" = "LI"Inches
9590 PRINT DN$DN$"Press any key to return to Matching Network Menu"
9592 I$=INKEY$: IF I$ = "" THEN 9592
9594 GOTO 50
10000 PI=3.151593:CL$=CHR$(12):DN$=CHR$(31):PT$="U2D4U2R4L8R4E1G2E1H1F2H1"
10002 PRINT CL$DN$," Impedance Matching Program with Smith Chart Display
10004 PRINT DN$" For the IBM PC or Compatibles
10006 PRINT
10010 PRINT
10020 PRINT "Select your Hardware Configuration from this list :"
10022 PRINT :PRINT " 1 --> Text Only
10024 PRINT :PRINT " 2 --> IBM Color/Graphics Emulation
10026 PRINT " (You can plot graphics from Basic"
10030 INPUT GR
10032 IF GR<>1 AND GR<>2 THEN 10030
10038 IF GR=1 THEN RETURN
10100 SCREEN 2:CLS:PRINT "Hold While I draw the Chart."
10104 CIRCLE (320,100),217
10106 LINE (103,100)-(537,100)
10108 CIRCLE (537,10),217,,PI,1.45*PI
10110 CIRCLE (537,190),217,,.55*PI,PI
10112 CIRCLE (429,100),109
10114 LOCATE 13,12: PRINT "0"
10116 LOCATE 13,69:PRINT "oo":PSET (550,100):PSET(551,100)
10118 LOCATE 5,18:PRINT" .4":LOCATE 22,18: PRINT "-.4"
10120 A=175:B=248:C=392:D=465
10122 FOR J=98 TO 102: PSET (A,J):PSET (B,J):PSET (C,J): PSET (D,J):NEXT J
10124 LOCATE 14,22: PRINT " .2"
10126 LOCATE 14,31: PRINT " .5"
10128 LOCATE 14,41: PRINT "1"
10130 LOCATE 14,50: PRINT "2
10132 LOCATE 14,59: PRINT "5"
10134 CIRCLE (537,325),544,,.626*PI,.742*PI
10136 CIRCLE (527,-125),544,,1.258*PI,1.374*PI
10140 DIM BLANK#(1500),FULL#(1500),TEXT#(400)
10142 GET (80,9)-(560,191),BLANK#:GET (80,9)-(560,191),FULL#:CLS
10202 PRINT "To enable capability of graphic screen dump to printer using the
10204 PRINT "<Print Scrn> command, you must run the appropriate hi-res screen
10206 PRINT "dump utility f
11000 end
11010 ' FROM TBS BBS #404/320-6202 WITH
11020 ' PERMISSION
11030 ' VOICE PHONE 404/321-1600
11031 ' SYSOP THERE IS BILL TONNESON